<?php
/**
 * Job Service
 * User: zng
 * Date: 2019/8/1
 * Time: 15:47
 */
namespace app\admin\service;

use app\exceptions\OrdinaryException;
use think\Queue;

Class Job{

    /**
     * 映射关系推送队列
     * @param mixed|array $jobData 队列数据
     * @param string $messagename 消息名称,与类形成映射关系
     * @author zx
     * @date 2019-08-01
     * @return string|int|boolean
     */
    public static function push( $jobData, string $messageName )
    {
        $newMessageName = ucfirst($messageName);
        // 1.当前任务将由哪个类来负责处理。
        //   当轮到该任务时，系统将生成一个该类的实例，并调用其 fire 方法
        $jobHandlerClassName = "app\admin\job\\$newMessageName";
        //判断类是否存在
        if ( ! class_exists( "\\$jobHandlerClassName" ) ) {
            throw new OrdinaryException($newMessageName.'类不存在');
        }
        // 2.当前任务归属的队列名称，如果为新队列，会自动创建
        $jobQueueName = $messageName.'JobQueue';
        return Queue::push($jobHandlerClassName, $jobData, $jobQueueName);
    }

}